1 /* 2 3 Boost Software License - Version 1.0 - August 17th, 2003 4 5 Permission is hereby granted, free of charge, to any person or organization 6 obtaining a copy of the software and accompanying documentation covered by 7 this license (the "Software") to use, reproduce, display, distribute, 8 execute, and transmit the Software, and to prepare derivative works of the 9 Software, and to permit third-parties to whom the Software is furnished to 10 do so, all subject to the following: 11 12 The copyright notices in the Software and this entire statement, including 13 the above license grant, this restriction and the following disclaimer, 14 must be included in all copies of the Software, in whole or in part, and 15 all derivative works of the Software, unless such copies or derivative 16 works are solely in the form of machine-executable object code generated by 17 a source language processor. 18 19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 DEALINGS IN THE SOFTWARE. 26 27 */ 28 29 module derelict.purple.ft; 30 31 import derelict.glib.gtypes; 32 import derelict.glib.glibconfig; 33 import derelict.glib.glist; 34 import derelict.purple.account; 35 import core.stdc.config; 36 import core.stdc.stdio; 37 import core.stdc.time; 38 39 extern (C): 40 41 alias _PurpleXfer PurpleXfer; 42 alias _Anonymous_0 PurpleXferType; 43 alias _Anonymous_1 PurpleXferStatusType; 44 alias _Anonymous_2 PurpleXferUiOps; 45 46 enum _Anonymous_0 47 { 48 PURPLE_XFER_UNKNOWN = 0, 49 PURPLE_XFER_SEND = 1, 50 PURPLE_XFER_RECEIVE = 2 51 } 52 53 enum _Anonymous_1 54 { 55 PURPLE_XFER_STATUS_UNKNOWN = 0, 56 PURPLE_XFER_STATUS_NOT_STARTED = 1, 57 PURPLE_XFER_STATUS_ACCEPTED = 2, 58 PURPLE_XFER_STATUS_STARTED = 3, 59 PURPLE_XFER_STATUS_DONE = 4, 60 PURPLE_XFER_STATUS_CANCEL_LOCAL = 5, 61 PURPLE_XFER_STATUS_CANCEL_REMOTE = 6 62 } 63 64 struct _Anonymous_2 65 { 66 void function (PurpleXfer*) new_xfer; 67 void function (PurpleXfer*) destroy; 68 void function (PurpleXfer*) add_xfer; 69 void function (PurpleXfer*, double) update_progress; 70 void function (PurpleXfer*) cancel_local; 71 void function (PurpleXfer*) cancel_remote; 72 gssize function (PurpleXfer*, const(guchar)*, gssize) ui_write; 73 gssize function (PurpleXfer*, guchar**, gssize) ui_read; 74 void function (PurpleXfer*, const(guchar)*, gsize) data_not_sent; 75 void function (PurpleXfer*, const(gchar)*) add_thumbnail; 76 } 77 78 struct _PurpleXfer 79 { 80 guint ref_; 81 PurpleXferType type; 82 PurpleAccount* account; 83 char* who; 84 char* message; 85 char* filename; 86 char* local_filename; 87 size_t size; 88 FILE* dest_fp; 89 char* remote_ip; 90 int local_port; 91 int remote_port; 92 int fd; 93 int watcher; 94 size_t bytes_sent; 95 size_t bytes_remaining; 96 time_t start_time; 97 time_t end_time; 98 size_t current_buffer_size; 99 PurpleXferStatusType status; 100 struct 101 { 102 void function (PurpleXfer*) init; 103 void function (PurpleXfer*) request_denied; 104 void function (PurpleXfer*) start; 105 void function (PurpleXfer*) end; 106 void function (PurpleXfer*) cancel_send; 107 void function (PurpleXfer*) cancel_recv; 108 gssize function (guchar**, PurpleXfer*) read; 109 gssize function (const(guchar)*, size_t, PurpleXfer*) write; 110 void function (PurpleXfer*, const(guchar)*, size_t) ack; 111 } 112 PurpleXferUiOps* ui_ops; 113 void* ui_data; 114 void* data; 115 } 116 117 version(Derelict_Link_Static) 118 { 119 extern( C ) nothrow 120 { 121 PurpleXfer* purple_xfer_new(PurpleAccount* account, PurpleXferType type, const(char)* who); 122 GList* purple_xfers_get_all(); 123 void purple_xfer_ref(PurpleXfer* xfer); 124 void purple_xfer_unref(PurpleXfer* xfer); 125 void purple_xfer_request(PurpleXfer* xfer); 126 void purple_xfer_request_accepted(PurpleXfer* xfer, const(char)* filename); 127 void purple_xfer_request_denied(PurpleXfer* xfer); 128 PurpleXferType purple_xfer_get_type(const(PurpleXfer)* xfer); 129 PurpleAccount* purple_xfer_get_account(const(PurpleXfer)* xfer); 130 const(char)* purple_xfer_get_remote_user(const(PurpleXfer)* xfer); 131 PurpleXferStatusType purple_xfer_get_status(const(PurpleXfer)* xfer); 132 gboolean purple_xfer_is_canceled(const(PurpleXfer)* xfer); 133 gboolean purple_xfer_is_completed(const(PurpleXfer)* xfer); 134 const(char)* purple_xfer_get_filename(const(PurpleXfer)* xfer); 135 const(char)* purple_xfer_get_local_filename(const(PurpleXfer)* xfer); 136 size_t purple_xfer_get_bytes_sent(const(PurpleXfer)* xfer); 137 size_t purple_xfer_get_bytes_remaining(const(PurpleXfer)* xfer); 138 size_t purple_xfer_get_size(const(PurpleXfer)* xfer); 139 double purple_xfer_get_progress(const(PurpleXfer)* xfer); 140 uint purple_xfer_get_local_port(const(PurpleXfer)* xfer); 141 const(char)* purple_xfer_get_remote_ip(const(PurpleXfer)* xfer); 142 uint purple_xfer_get_remote_port(const(PurpleXfer)* xfer); 143 time_t purple_xfer_get_start_time(const(PurpleXfer)* xfer); 144 time_t purple_xfer_get_end_time(const(PurpleXfer)* xfer); 145 void purple_xfer_set_completed(PurpleXfer* xfer, gboolean completed); 146 void purple_xfer_set_message(PurpleXfer* xfer, const(char)* message); 147 void purple_xfer_set_filename(PurpleXfer* xfer, const(char)* filename); 148 void purple_xfer_set_local_filename(PurpleXfer* xfer, const(char)* filename); 149 void purple_xfer_set_size(PurpleXfer* xfer, size_t size); 150 void purple_xfer_set_bytes_sent(PurpleXfer* xfer, size_t bytes_sent); 151 PurpleXferUiOps* purple_xfer_get_ui_ops(const(PurpleXfer)* xfer); 152 void purple_xfer_set_read_fnc(PurpleXfer* xfer, gssize function (guchar**, PurpleXfer*) fnc); 153 void purple_xfer_set_write_fnc(PurpleXfer* xfer, gssize function (const(guchar)*, size_t, PurpleXfer*) fnc); 154 void purple_xfer_set_ack_fnc(PurpleXfer* xfer, void function (PurpleXfer*, const(guchar)*, size_t) fnc); 155 void purple_xfer_set_request_denied_fnc(PurpleXfer* xfer, void function (PurpleXfer*) fnc); 156 void purple_xfer_set_init_fnc(PurpleXfer* xfer, void function (PurpleXfer*) fnc); 157 void purple_xfer_set_start_fnc(PurpleXfer* xfer, void function (PurpleXfer*) fnc); 158 void purple_xfer_set_end_fnc(PurpleXfer* xfer, void function (PurpleXfer*) fnc); 159 void purple_xfer_set_cancel_send_fnc(PurpleXfer* xfer, void function (PurpleXfer*) fnc); 160 void purple_xfer_set_cancel_recv_fnc(PurpleXfer* xfer, void function (PurpleXfer*) fnc); 161 gssize purple_xfer_read(PurpleXfer* xfer, guchar** buffer); 162 gssize purple_xfer_write(PurpleXfer* xfer, const(guchar)* buffer, gsize size); 163 void purple_xfer_start(PurpleXfer* xfer, int fd, const(char)* ip, uint port); 164 void purple_xfer_end(PurpleXfer* xfer); 165 void purple_xfer_add(PurpleXfer* xfer); 166 void purple_xfer_cancel_local(PurpleXfer* xfer); 167 void purple_xfer_cancel_remote(PurpleXfer* xfer); 168 void purple_xfer_error(PurpleXferType type, PurpleAccount* account, const(char)* who, const(char)* msg); 169 void purple_xfer_update_progress(PurpleXfer* xfer); 170 void purple_xfer_conversation_write(PurpleXfer* xfer, char* message, gboolean is_error); 171 void purple_xfer_ui_ready(PurpleXfer* xfer); 172 void purple_xfer_prpl_ready(PurpleXfer* xfer); 173 gconstpointer purple_xfer_get_thumbnail(const(PurpleXfer)* xfer, gsize* len); 174 const(gchar)* purple_xfer_get_thumbnail_mimetype(const(PurpleXfer)* xfer); 175 void purple_xfer_set_thumbnail(PurpleXfer* xfer, gconstpointer thumbnail, gsize size, const(gchar)* mimetype); 176 void purple_xfer_prepare_thumbnail(PurpleXfer* xfer, const(gchar)* formats); 177 void* purple_xfers_get_handle(); 178 void purple_xfers_init(); 179 void purple_xfers_uninit(); 180 void purple_xfers_set_ui_ops(PurpleXferUiOps* ops); 181 PurpleXferUiOps* purple_xfers_get_ui_ops(); 182 } 183 } 184 else 185 { 186 extern( C ) nothrow 187 { 188 alias da_purple_xfer_new = PurpleXfer* function(PurpleAccount* account, PurpleXferType type, const(char)* who); 189 alias da_purple_xfers_get_all = GList* function(); 190 alias da_purple_xfer_ref = void function(PurpleXfer* xfer); 191 alias da_purple_xfer_unref = void function(PurpleXfer* xfer); 192 alias da_purple_xfer_request = void function(PurpleXfer* xfer); 193 alias da_purple_xfer_request_accepted = void function(PurpleXfer* xfer, const(char)* filename); 194 alias da_purple_xfer_request_denied = void function(PurpleXfer* xfer); 195 alias da_purple_xfer_get_type = PurpleXferType function(const(PurpleXfer)* xfer); 196 alias da_purple_xfer_get_account = PurpleAccount* function(const(PurpleXfer)* xfer); 197 alias da_purple_xfer_get_remote_user = const(char)* function(const(PurpleXfer)* xfer); 198 alias da_purple_xfer_get_status = PurpleXferStatusType function(const(PurpleXfer)* xfer); 199 alias da_purple_xfer_is_canceled = gboolean function(const(PurpleXfer)* xfer); 200 alias da_purple_xfer_is_completed = gboolean function(const(PurpleXfer)* xfer); 201 alias da_purple_xfer_get_filename = const(char)* function(const(PurpleXfer)* xfer); 202 alias da_purple_xfer_get_local_filename = const(char)* function(const(PurpleXfer)* xfer); 203 alias da_purple_xfer_get_bytes_sent = size_t function(const(PurpleXfer)* xfer); 204 alias da_purple_xfer_get_bytes_remaining = size_t function(const(PurpleXfer)* xfer); 205 alias da_purple_xfer_get_size = size_t function(const(PurpleXfer)* xfer); 206 alias da_purple_xfer_get_progress = double function(const(PurpleXfer)* xfer); 207 alias da_purple_xfer_get_local_port = uint function(const(PurpleXfer)* xfer); 208 alias da_purple_xfer_get_remote_ip = const(char)* function(const(PurpleXfer)* xfer); 209 alias da_purple_xfer_get_remote_port = uint function(const(PurpleXfer)* xfer); 210 alias da_purple_xfer_get_start_time = time_t function(const(PurpleXfer)* xfer); 211 alias da_purple_xfer_get_end_time = time_t function(const(PurpleXfer)* xfer); 212 alias da_purple_xfer_set_completed = void function(PurpleXfer* xfer, gboolean completed); 213 alias da_purple_xfer_set_message = void function(PurpleXfer* xfer, const(char)* message); 214 alias da_purple_xfer_set_filename = void function(PurpleXfer* xfer, const(char)* filename); 215 alias da_purple_xfer_set_local_filename = void function(PurpleXfer* xfer, const(char)* filename); 216 alias da_purple_xfer_set_size = void function(PurpleXfer* xfer, size_t size); 217 alias da_purple_xfer_set_bytes_sent = void function(PurpleXfer* xfer, size_t bytes_sent); 218 alias da_purple_xfer_get_ui_ops = PurpleXferUiOps* function(const(PurpleXfer)* xfer); 219 alias da_purple_xfer_set_read_fnc = void function(PurpleXfer* xfer, gssize function (guchar**, PurpleXfer*) fnc); 220 alias da_purple_xfer_set_write_fnc = void function(PurpleXfer* xfer, gssize function (const(guchar)*, size_t, PurpleXfer*) fnc); 221 alias da_purple_xfer_set_ack_fnc = void function(PurpleXfer* xfer, void function (PurpleXfer*, const(guchar)*, size_t) fnc); 222 alias da_purple_xfer_set_request_denied_fnc = void function(PurpleXfer* xfer, void function (PurpleXfer*) fnc); 223 alias da_purple_xfer_set_init_fnc = void function(PurpleXfer* xfer, void function (PurpleXfer*) fnc); 224 alias da_purple_xfer_set_start_fnc = void function(PurpleXfer* xfer, void function (PurpleXfer*) fnc); 225 alias da_purple_xfer_set_end_fnc = void function(PurpleXfer* xfer, void function (PurpleXfer*) fnc); 226 alias da_purple_xfer_set_cancel_send_fnc = void function(PurpleXfer* xfer, void function (PurpleXfer*) fnc); 227 alias da_purple_xfer_set_cancel_recv_fnc = void function(PurpleXfer* xfer, void function (PurpleXfer*) fnc); 228 alias da_purple_xfer_read = gssize function(PurpleXfer* xfer, guchar** buffer); 229 alias da_purple_xfer_write = gssize function(PurpleXfer* xfer, const(guchar)* buffer, gsize size); 230 alias da_purple_xfer_start = void function(PurpleXfer* xfer, int fd, const(char)* ip, uint port); 231 alias da_purple_xfer_end = void function(PurpleXfer* xfer); 232 alias da_purple_xfer_add = void function(PurpleXfer* xfer); 233 alias da_purple_xfer_cancel_local = void function(PurpleXfer* xfer); 234 alias da_purple_xfer_cancel_remote = void function(PurpleXfer* xfer); 235 alias da_purple_xfer_error = void function(PurpleXferType type, PurpleAccount* account, const(char)* who, const(char)* msg); 236 alias da_purple_xfer_update_progress = void function(PurpleXfer* xfer); 237 alias da_purple_xfer_conversation_write = void function(PurpleXfer* xfer, char* message, gboolean is_error); 238 alias da_purple_xfer_ui_ready = void function(PurpleXfer* xfer); 239 alias da_purple_xfer_prpl_ready = void function(PurpleXfer* xfer); 240 alias da_purple_xfer_get_thumbnail = gconstpointer function(const(PurpleXfer)* xfer, gsize* len); 241 alias da_purple_xfer_get_thumbnail_mimetype = const(gchar)* function(const(PurpleXfer)* xfer); 242 alias da_purple_xfer_set_thumbnail = void function(PurpleXfer* xfer, gconstpointer thumbnail, gsize size, const(gchar)* mimetype); 243 alias da_purple_xfer_prepare_thumbnail = void function(PurpleXfer* xfer, const(gchar)* formats); 244 alias da_purple_xfers_get_handle = void* function(); 245 alias da_purple_xfers_init = void function(); 246 alias da_purple_xfers_uninit = void function(); 247 alias da_purple_xfers_set_ui_ops = void function(PurpleXferUiOps* ops); 248 alias da_purple_xfers_get_ui_ops = PurpleXferUiOps* function(); 249 } 250 251 __gshared 252 { 253 da_purple_xfer_new purple_xfer_new; 254 da_purple_xfers_get_all purple_xfers_get_all; 255 da_purple_xfer_ref purple_xfer_ref; 256 da_purple_xfer_unref purple_xfer_unref; 257 da_purple_xfer_request purple_xfer_request; 258 da_purple_xfer_request_accepted purple_xfer_request_accepted; 259 da_purple_xfer_request_denied purple_xfer_request_denied; 260 da_purple_xfer_get_type purple_xfer_get_type; 261 da_purple_xfer_get_account purple_xfer_get_account; 262 da_purple_xfer_get_remote_user purple_xfer_get_remote_user; 263 da_purple_xfer_get_status purple_xfer_get_status; 264 da_purple_xfer_is_canceled purple_xfer_is_canceled; 265 da_purple_xfer_is_completed purple_xfer_is_completed; 266 da_purple_xfer_get_filename purple_xfer_get_filename; 267 da_purple_xfer_get_local_filename purple_xfer_get_local_filename; 268 da_purple_xfer_get_bytes_sent purple_xfer_get_bytes_sent; 269 da_purple_xfer_get_bytes_remaining purple_xfer_get_bytes_remaining; 270 da_purple_xfer_get_size purple_xfer_get_size; 271 da_purple_xfer_get_progress purple_xfer_get_progress; 272 da_purple_xfer_get_local_port purple_xfer_get_local_port; 273 da_purple_xfer_get_remote_ip purple_xfer_get_remote_ip; 274 da_purple_xfer_get_remote_port purple_xfer_get_remote_port; 275 da_purple_xfer_get_start_time purple_xfer_get_start_time; 276 da_purple_xfer_get_end_time purple_xfer_get_end_time; 277 da_purple_xfer_set_completed purple_xfer_set_completed; 278 da_purple_xfer_set_message purple_xfer_set_message; 279 da_purple_xfer_set_filename purple_xfer_set_filename; 280 da_purple_xfer_set_local_filename purple_xfer_set_local_filename; 281 da_purple_xfer_set_size purple_xfer_set_size; 282 da_purple_xfer_set_bytes_sent purple_xfer_set_bytes_sent; 283 da_purple_xfer_get_ui_ops purple_xfer_get_ui_ops; 284 da_purple_xfer_set_read_fnc purple_xfer_set_read_fnc; 285 da_purple_xfer_set_write_fnc purple_xfer_set_write_fnc; 286 da_purple_xfer_set_ack_fnc purple_xfer_set_ack_fnc; 287 da_purple_xfer_set_request_denied_fnc purple_xfer_set_request_denied_fnc; 288 da_purple_xfer_set_init_fnc purple_xfer_set_init_fnc; 289 da_purple_xfer_set_start_fnc purple_xfer_set_start_fnc; 290 da_purple_xfer_set_end_fnc purple_xfer_set_end_fnc; 291 da_purple_xfer_set_cancel_send_fnc purple_xfer_set_cancel_send_fnc; 292 da_purple_xfer_set_cancel_recv_fnc purple_xfer_set_cancel_recv_fnc; 293 da_purple_xfer_read purple_xfer_read; 294 da_purple_xfer_write purple_xfer_write; 295 da_purple_xfer_start purple_xfer_start; 296 da_purple_xfer_end purple_xfer_end; 297 da_purple_xfer_add purple_xfer_add; 298 da_purple_xfer_cancel_local purple_xfer_cancel_local; 299 da_purple_xfer_cancel_remote purple_xfer_cancel_remote; 300 da_purple_xfer_error purple_xfer_error; 301 da_purple_xfer_update_progress purple_xfer_update_progress; 302 da_purple_xfer_conversation_write purple_xfer_conversation_write; 303 da_purple_xfer_ui_ready purple_xfer_ui_ready; 304 da_purple_xfer_prpl_ready purple_xfer_prpl_ready; 305 da_purple_xfer_get_thumbnail purple_xfer_get_thumbnail; 306 da_purple_xfer_get_thumbnail_mimetype purple_xfer_get_thumbnail_mimetype; 307 da_purple_xfer_set_thumbnail purple_xfer_set_thumbnail; 308 da_purple_xfer_prepare_thumbnail purple_xfer_prepare_thumbnail; 309 da_purple_xfers_get_handle purple_xfers_get_handle; 310 da_purple_xfers_init purple_xfers_init; 311 da_purple_xfers_uninit purple_xfers_uninit; 312 da_purple_xfers_set_ui_ops purple_xfers_set_ui_ops; 313 da_purple_xfers_get_ui_ops purple_xfers_get_ui_ops; 314 } 315 }